1. Field of the Invention
The present invention relates, in general, to diagnostic testing of computer systems and more particularly, to an adaptive diagnostic testing method and associated systems for providing desired diagnostic functions in a computer or computer system while controlling or increasing the speed of system boot processes.
2. Relevant Background
The typical start up of a computer or computing system involves reading an operating system (OS) from disk and is often called a boot process or booting up a computer. Diagnostic testing is often performed as part of the boot process to identify potential problems with the computer system, but running these tests can significantly slow the boot process. As a result, computer owners and system administrators are continually struggling with the questions of when to take the time to run diagnostic tests, how long will it take to boot the system, and are diagnostic tests worth the increases in boot time. The technical service industry has struggled with these questions since computing devices first failed and required repair or since the initial use of computer systems.
Under existing practices, a computer operator or system administrator has to choose between booting their computer system quickly with no or very limited diagnostic testing or booting their system with some level of diagnostic testing that extends the time required for the boot process to complete. Typically, a boot with diagnostic testing is chosen when it is believed there may be faulty components within a system and there is a need to test, discover, and diagnose the related problems prior to operating the computer system. The choice to run diagnostic testing as part of the boot process is often controlled by an operator or administrator setting a variable indicating testing is to be performed and in some cases, choosing a desired diagnostic test level.
The amount of time required for the boot process for a computer system or “boot time” is affected by a number of factors or variables. For example, the amount or degree of test coverage that is selected or required in the execution of the diagnostic testing can significantly shorten or lengthen the boot time. Similarly, the number of diagnostic tests chosen for execution can affect boot time. The number of tests may also vary with the number of components in the computer system that require testing or that are specified for testing. In other words, the size of the system, the amount of memory, the number of central processing units (CPUs), the number of Field Replaceable Units (FRUs), and other component-related factors can affect the length of boot time. Similarly, the number of tests that are executed may vary with the number of diagnostic tests available for running against a specific system or subsystem (i.e., tests for CPUs, for memory, for I/O devices, and the like).
Even the procedure or way in which the diagnostic tests are executed changes the boot time. For example, the tests may be run sequentially or serially with one test not beginning until the completion of a prior test or the tests may be run with parallelism with at least some tests being run concurrently. Another major consideration in running diagnostic tests at boot time is that time required for each test to execute as such test execution time varies widely among known diagnostic tests. Test engineers attempt to achieve proper test coverage for a computer system by considering data patterns used in the system, command sequences employed, system addressing practices, and many other factors. The time to run certain diagnostic functions or tests are often extended when the system includes increased or significant amounts of memory.
Efforts to reduce the effect of diagnostic testing on boot time have often stressed trying to reduce the number of diagnostic tests that are available for running on a system or subsystem. Other efforts have emphasized the usefulness of reducing the amount of time each test takes to run or execute. These efforts to reduce boot time have not been entirely successful, and the computer industry continues to struggle with the use of the diagnostic testing strategy that assumes there may be an unknown fault or problem present somewhere in every computer system as this strategy requires that testing be used each time a system is booted to try to isolate or identify the potential fault.
There remains a need for an improved boot method that provides a different model for diagnostic testing and its deployment. Such a method preferably would provide adaptive, dynamic diagnostic testing requiring little or no human intervention and at least in some cases, would be applied automatically and when required rather than by default.